\chapter{Evaluaci\'on del Sistema de Recomendaci\'on}
\label{cha:capCinco}

\section{Introducci\'on.}
En este capítulo se muestran las evaluaciones y pruebas realizadas que permiten obtener los resultados que proporcionarán los mejores parámetros de ajustes para el sistema de recomendación, lo que contribuiría a que la estimación de las predicciones del sistema sean más acertadas.
 \\
En las secciones subsiguientes se detalla el entorno de prueba creado por el grupo de trabajo, se resume los procedimientos de análisis de los parámetros y módulos explicados en el capítulo \ref{cha:capCuatro} como parte de la Evaluación Cuantitativa (sección \ref{sec:quantivative}), mostrando resultados satisfactorios y concluyentes. Por último, se propone un procedimiento de Evaluación Cualitativa como trabajo futuro, para cuando el sistema se encuentre en uso.

\section{Entorno de Prueba.}
\label{entornoPrueba}

Con el fin de realizar pruebas o experimentaciones sobre el comportamiento de los algoritmos de recomendación se ha visto la necesidad de crear un entorno de pruebas adecuado que proporcione una serie de lineamientos para la realización de cada una de ellas. En esta sección se describe dicho entorno, los procedimientos que se seguirán para cada experimentación, las métricas de evaluación y la forma de presentación de resultados finales. 

\subsection{Descripción del escenario de pruebas.}

A través de la experimentación se busca estudiar el comportamiento de los algoritmos según se varían los datos de entrada o ciertos parámetros de ajuste, para luego encontrar una combinación adecuada que permita reducir el error en la recomendación. Para cada prueba, se ejecutará el algoritmo de recomendación las veces necesarias, se almacenarán y analizarán los datos de salida para finalmente obtener conclusiones para cada experimento.\\

El escenario típico para la realización de los experimentos o pruebas al algoritmo se describe como sigue:
\begin{enumerate}
	\item Se analizará y especificará los resultados a obtener de cada prueba.
	\item Se preparará al algoritmo para dicha prueba.
	\item Se elegirán y construirán los conjuntos (sets) de entrenamiento y pruebas adecuados.
	\item Se analizarán los resultados y se obtendrán las conclusiones de cada experimento.
\end{enumerate}


\subsubsection{Preparación de los algoritmos de recomendación}
\label{sec:PrepAlgos}

Para que sea posible evaluar el comportamiento de los algoritmos de recomendación de acuerdo a la variación de ciertos parámetros, ha sido necesario realizar varias modificaciones en ellos para que puedan recibir como información de entrada los diversos parámetros de ajuste con los que se desea ejecutar las pruebas. Además de esto, se modifican las salidas de cada una de estas mutaciones para que devuelvan únicamente los resultados relevantes para cada prueba propuesta. Más adelante en este capítulo se expondrán todas las pruebas realizadas y las modificaciones al algoritmo mencionadas.

\subsubsection{Origen de los datos de prueba}
\label{DiviDatsPrueb}

Para la realización de cada una de las pruebas de funcionamiento de los algoritmos se ha tomado como entrada el set de datos descrito en la sección \ref{sub:MovieLens}, y, se separa el archivo que registra las calificaciones que los usuarios en dos partes: la primera que contiene los datos que servirán como entrada para la creación de las ontologías del perfil del usuario, y una segunda parte, que constituirá un archivo que contiene datos que no se incluyen en el proceso de creación del perfil del usuario y que sirven exclusivamente para realizar las pruebas de las recomendaciones. Para lograr este objetivo, se divide el número total de calificaciones de cada usuario en un porcentaje para el primer set y el porcentaje restante para segundo, de esta manera se consigue tener un set de entrenamiento y un set de pruebas parecidos a los que se utilizan en procedimientos de pruebas para los algoritmos de inteligencia artificial o de aprendizaje de máquina. 

\subsection{Selección de Usuarios}
\label{sub:usuarios}

A pesar de que todas las pruebas pueden ser ejecutadas utilizando los mismos sets de entrenamiento y pruebas, en muchas de ellas se necesita elegir un cierto número de pre-condiciones para que un usuario sea aceptable para incluirse en estos sets. Por ejemplo, no se puede incluir a un usuario que haya calificado cientos de ítems, en las pruebas del módulo de estereotipos, ya que por definición, este tipo de usuario no cumple con uno de los criterios de admisión de un estereotipo que es contar con un número reducido de calificaciones otorgadas. Adicionalmente, debido a la complejidad computacional que representa la ejecución de algunos procedimientos de prueba, no todos se ejecutan con un igual número de usuarios o calificaciones, por lo que se ha elaborado un algoritmo capaz de crear tanto un set de entrenamiento como uno de pruebas en los que se puede elegir: 

\begin{itemize}
	\item A los usuarios que cumplan con un rango de calificaciones determinado, por ejemplo, se tomará en cuenta solo a los usuarios que tengan de cien a doscientas películas calificadas.
	
	\item El número de usuarios a incluir en los set de entrenamiento y pruebas. Cabe recalcar que el número de usuarios en ambos sets se ha escogido de tal forma que sea siempre igual.
	
	\item El porcentaje de calificaciones consideradas para cada set. Por ejemplo, si un usuario tiene registradas 200 calificaciones se puede enviar el 80\% de ellas al set de entrenamiento y el 20\% restante al set de pruebas.  
\end{itemize}

Como un ejemplo de la salida de este algoritmo se puede tener dos archivos que contengan, cada uno, 200 usuarios que tengan un rango de entre 200 y 220 películas calificadas, de las cuales se enviará el 85\% para el set de entrenamiento y el 15\% restante para el set de pruebas.\\

Otro aspecto importante de la selección de usuarios es que una vez creado el set de pruebas, el mismo se somete a un segundo filtro para eliminar las calificaciones inferiores a cuatro puntos, pues como se explica en \cite{codinaC10}, los contenidos audiovisuales con calificaciones de 4 en adelante son los que potencialmente serán recomendados a un usuario y consecuentemente otorgándole más importancia a la precisión. \\

\subsection{Métricas de evaluación}

La métrica más importante al momento de evaluar un algoritmo de recomendación es la precisión en las recomendaciones, la cual se mide promediando el error absoluto entre la calificación contenida en el archivo de test y la calificación obtenida por el recomendador. Dicho promedio es conocido como \gls{MAElabel} y se expresa en la ecuación \ref{eq:MAE}.			

\begin{equation}
\label{eq:MAE}
MAE=\frac{1}{N}.\sum_{u,i}^{U,I}\left|P_{u,i} - R_{u,i}\right|
\end{equation}

Donde:
\begin{itemize}
	\item $U$ corresponde al conjunto de los usuarios examinados.
	\item $I$ corresponde al conjunto de ítems evaluados.
	\item $N$ corresponde al total de \emph{ratings} comparados.
	\item $P$ corresponde a la predicción obtenida por el sistema.
	\item $R$ corresponde a la calificación otorgada por el usuario.
\end{itemize}

\subsection{Presentación de Resultados.}
Los resultados obtenidos de la realización de cada prueba serán presentados en forma gráfica, lo cual ofrece un mayor entendimiento del comportamiento del algoritmo ya que en la totalidad de las pruebas se obtiene como resultado una serie de tablas de resultados de gran tamaño, las cuales, al ser presentadas de esta manera, representarían por un lado una gran dificultad al momento de analizar los resultados obtenidos y por otro lado imposibilitarían una presentación de todos los resultados.

\section{An\'alisis de resultados:\\ Evaluaci\'on Cuantitativa.}
\label{sec:quantivative}

La evaluación cuantitativa consta de varias pruebas realizadas a diferentes algoritmos y módulos, que permiten obtener indicadores numéricos que reflejen el desempeño de los diferentes componentes del sistema . Estas pruebas se explican con detalle a continuación.

\subsection{Comparación de resultados\\ de los algoritmos de recomendación.}

En este experimento se hace una comparación entre las dos técnicas de recomendación mencionadas en la sección \ref{sec:nucleoSistema}, concretamente, se compara los resultados del algoritmo de recomendación por inferencia semántica y aquellos del algoritmo de recomendación por dispersión.\\
 El objetivo principal de esta comparación es verificar qué algoritmo tiene una mayor precisión al momento de calcular las predicciones de una calificación para un ítem determinado, para ello, se selecciona un total de cien usuarios que cuenten con un rango de 200 a 220 ítems calificados, asegurando de esta manera que hayan suficientes datos tanto para el entrenamiento del algoritmo como para el test. Además, al no existir ningún parámetro de ordenamiento en los usuarios se asegura su variedad en preferencias televisivas.\\

El procedimiento de experimentación de esta etapa, requiere que una vez determinado el grupo de usuarios antes mencionado, se proceda a crear los archivos de entrenamiento y de test usando un total del 80\% de las calificaciones otorgadas por el usuario para la creación de su ontología y el 20\% restante para el archivo de test. A continuación se crean las ontologías de cada usuario y al final se procede a ejecutar los dos algoritmos utilizando para cada uno las mismas ontologías de usuarios y el mismo archivo de pruebas, garantizando un entorno de prueba en igualdad de condiciones. Cada algoritmo calculará el error en la predicción obtenida con respecto a las especificadas en el set de prueba, calculará un promedio por usuario y un promedio general para el total de usuarios. Los resultados obtenidos se muestran y comentan en la siguiente sección.

\subsubsection{Resultados}

En la figura \ref{fig:dispvsinf} se muestra el \gls{MAElabel} o promedio de error por cada usuario evaluado. Puede notarse que el error tiene un comportamiento muy parecido tanto al utilizar el algoritmo de dispersión, representado en azul, como cuando se utiliza la técnica de inferencia semántica, representada en naranja.  Es claro también que para todos los casos, el algoritmo de inferencia semántica presenta un menor promedio de error y en ciertos casos elimina algunos picos claramente identificables en las predicciones generadas con el primer algoritmo.       

\begin{figure}[ht!]
	\centering
		\includegraphics[width=100mm]{ImagenesTesis/Cap5/dispvsinf.PNG}
	\caption{Gráfico del \gls{MAElabel} por usuarios, dispersión vs inferencia semántica.}
	\label{fig:dispvsinf}
\end{figure}

En la figura \ref{fig:dispvsinftotal} se presenta el gráfico del \gls{MAElabel} total de los usuarios evaluados, como es de esperar recordando el comportamiento descrito por la figura \ref{fig:dispvsinf}, el algoritmo de inferencia semántica presenta un menor promedio de error y en consecuencia, se puede decir que es más preciso. 

\begin{figure}[ht!]
	\centering
		\includegraphics[width=100mm]{ImagenesTesis/Cap5/dispvsinftotal.PNG}
	\caption{Gráfico del \gls{MAElabel} final, dispersión vs inferencia}
	\label{fig:dispvsinftotal}
\end{figure}

\subsubsection{Conclusiones del experimento.}
Dados los resultados obtenidos de la experimentación se puede concluir que en el algoritmo de recomendación por inferencia semántica tiene una mejor desempeño en la estimación de predicciones de la valoración para un ítem. Este resultado determina así, que en adelante en la mayoría de experimentos realizados utilicen este algoritmo como base, a menos que se indique lo contrario. 

\subsection{Impacto de las propiedades Semánticas en la Estimación de las Predicciones usando el algoritmo por dispersión }
Para la realización de esta prueba, se utilizó el algoritmo por dispersión, explicado detalladamente en la sección \ref{sub:Dispercion}. La finalidad de este experimento es demostrar que mientras más propiedades semánticas se utilicen, menor sera el \gls{MAElabel} determinado por la ecuación: \eqref{eq:MAE}.

\subsubsection{Conjunto de datos.}
En primer lugar se seleccionó un grupo de usuarios con el mayor número de calificaciones, asegurando que al menos 100 usuarios igualen o superen ese número. El número base establecido fue un mínimo de 825 calificaciones por usuario. Así, se obtuvo un conjunto de 102 usuarios con más de 825 películas calificadas cada uno.\\

Se identificaron dos conjuntos disjuntos de datos: un set de entrenamiento y uno de prueba. Por cada usuario, del conjunto de películas calificadas, se eligieron las películas para cada set en base a dos criterios: 

\begin{enumerate}
	\item Las películas del set de prueba no pueden estar presentes en el set de entrenamiento.
	\item Las películas del set de prueba deben tener al menos una propiedad semántica en común (a manera de una función heurística) con las películas del set de entrenamiento. 
\end{enumerate}

Estas dos condiciones aseguran que en el momento de realizar la prueba no ingresen datos no vinculados en lo absoluto con las preferencias del usuario representadas en la ontología, y además, que no ingresen datos que se hayan sometido al entrenamiento y que puedan afectar de una manera u otra en los resultados.\\

Finalizado este proceso, se obtuvo un archivo para entrenamiento con 102 usuarios con un promedio de 580 películas calificadas por cada uno, y un archivo de test con los mismos usuarios pero con un promedio de 255 películas calificadas por cada usuario. Ninguna combinación de usuario-película-calificación están repetidas dentro de los archivos, ni incluida en ambos.

\subsubsection{Procedimiento.}
Con el conjunto de datos seleccionado, se procede a crear las ontologías, tal como se explica en la sección \ref{sub:creacionOntologia}. Para la prueba, se introdujeron al sistema ocho combinaciones diferentes de propiedades semánticas en igual número de pruebas. La propiedad \emph{Género} (Genre) se incluyó en todas las pruebas ya que es la única propiedad que tiene \gls{DOIlabel} en las ontologías de todos los usuarios. El algoritmo recibe una cadena de caracteres, los cuales son los parámetros de ejecución, es decir, se enviá a la función la combinación de propiedades con las cuales el algoritmo realizará el cálculo de las predicciones.\\

Se realizaron pruebas con las combinaciones de propiedades semánticas siguientes:
\begin{itemize}
	\item Género.
	\item Género, Actor.
	\item Género, \gls{IMDBlabel}.
	\item Género, IMDB, Actor.
	\item Género, Actor,Director.
	\item Género, Actor, Director, Escritor.
	\item Género, Actor,Escritor.
	\item Género, Actor, Director, Escritor, IMDB
\end{itemize}

\subsubsection{Resultados.}

La figura \ref{fig:DispersionMae} muestra los resultados para cada una de estas pruebas. En ella se presenta el error promedio por todos los usuarios o \gls{MAElabel} \eqref{eq:MAE} especificado para cada una de las combinaciones indicadas

\begin{figure}[htb!]
	\centering
		\includegraphics[width=0.9\textwidth]{ImagenesTesis/Cap5/DispersionMae.png}
	\caption{Promedio de error de todos los usuarios en cada una de las pruebas \cite{OurPaper}.}
	\label{fig:DispersionMae}
\end{figure}


En la figura \ref{fig:DispersionMaeXuser} presenta un gráfico del \gls{MAElabel} por cada usuario, en cada una de las pruebas efectuadas.
\begin{figure}[ht!]
	\centering
		\includegraphics[width=1.00\textwidth]{ImagenesTesis/Cap5/DispersionMaeXUsuario.png}
	\caption{Promedio de error de todos los usuarios en cada una de las pruebas \cite{OurPaper}.}
	\label{fig:DispersionMaeXuser}
\end{figure}

Como se puede observar en la figura \ref{fig:DispersionMae}, la prueba que involucra únicamente la propiedad género, refleja error promedio del 21.6\% en la estimación de las predicciones, que en una escala del 1 al 5 representa un error promedio de 1.08 puntos; Al ingresar la propiedad actor, el error se reduce en un aproximado del 4\% llegando así a obtener un error del 17.5\%, que representa 0.87 puntos en la escala del 1 al 5. A medida que se siguen agregando propiedades semánticas, el error tiende a reducir aunque en un rango menor.\\

Se puede observar también que cuando se realiza la prueba con tres propiedades semánticas incluyendo la propiedad actor, se obtiene un error menor que ejecutando la prueba con igual número de propiedades semánticas sin incluir a la propiedad actor, lo cual sugiere que esta propiedad aporta considerablemente a la reducción del error, en relación a las otras propiedades del programa, sin tomar en cuenta la propiedad género ya que como se mencionó anteriormente, ésta se utiliza para todas las pruebas.\\

Por otra parte cuando la incorporación de la propiedad \gls{IMDBlabel}, produce que el error tienda a reducirse ligeramente en todos los casos, sin embargo, este cambio parece ser mínimo en comparación con la reducción  causada por la inclusión de las otras propiedades semánticas. De estas observaciones e puede concluir que el aporte de información de carácter no-semántico en la estimación de las predicciones, no es tan significativo como lo es el aporte de las propiedades
semánticas.\\

Los picos y singularidades en la figura \ref{fig:DispersionMaeXuser}, reflejan casos particulares de usuarios con gustos dispersos (problema de la oveja negra, según se comentó en la sección \ref{subsub:limitaciones}).

\subsubsection{Conclusiones del experimento.}

Al combinar la propiedad Género con cualquier otra propiedad semántica, el error tiende a disminuir alrededor de un 3\%, llegando al 19\%, lo que indica que puede conseguirse una mejora sustancial sí, al menos, se utilizan dos propiedades semánticas en el algoritmo, como se reporta en \cite{OurPaper}. \\

Se puede concluir que mientras mas propiedades semánticas se utilice, el error será menor, aunque la diferencia no sea de sustancial al introducir ciertas propiedades.

\subsection{Impacto de las propiedades Semánticas en la Estimación de las Predicciones usando el algoritmo con Inferencia Semántica}

Esta prueba se realizó sobre el algoritmo de recomendación por inferencia semántica estudiado en la sección \ref{sub:algoritmoInferencia} En ella se trata de corroborar los resultados obtenidos en la prueba anterior, que confirmaban la hipótesis planteada de que mientras más propiedades semánticas se utilicen, menor será el \gls{MAElabel} obtenido.

\subsubsection{Conjunto de datos.}

En este experimento, se seleccionó un total de 100 usuarios que tengan un rango de entre 200 y 220 películas calificadas, en este caso no fue necesario un proceso de selección de usuarios igual al de la sección anterior puesto que según la lógica del algoritmo, este se encarga de encontrar los vínculos que existen entre cada uno de los ítems.\\

De igual forma se crearon 2 conjuntos de datos: el primero para la creación de las ontologías de los usuarios y el segundo para la realización de las pruebas; se utilizó la proporción del 80\% y 20\% de las calificaciones respectivamente para la creación de cada uno de estos conjuntos.

\subsubsection{Procedimiento.}

Al igual que en los experimentos anteriores, en primer lugar se crean las ontologías de los usuarios para seguidamente, utilizando el mecanismo selector de propiedades semánticas presentado en la sección \ref{sub:selectorPropiedades}, introducir ocho combinaciones diferentes de propiedades semánticas en igual número de pruebas que en el experimento anterior. De igual manera, se incluyó la propiedad \emph{Género} \(Genre\) en todas las pruebas, sin embargo, en este caso no se incluyó la propiedad \gls{IMDBlabel} puesto que no se trata de una propiedad semántica de tipo objeto lo cual imposibilita utilizarla para la realización de conexiones; las combinaciones utilizadas fueron:

\begin{enumerate}
	\item Género.
	\item Género, Escritor.
	\item Género, Director.
	\item Género, Escritor, Director.
	\item Género, Actor.
	\item Género, Actor, Escritor.
	\item Género, Actor, Director.
	\item Género, Actor, Director, Escritor.
\end{enumerate}

\subsubsection{Resultados.}

La figura \ref{fig:InferenciaPropSemMae} muestra el promedio de error de todos los usuarios para cada una de las pruebas efectuadas.  \\

\begin{figure}[ht!]
	\centering
		\includegraphics[width=100mm]{ImagenesTesis/Cap5/InferenciaPropSemMae.png}
	\caption{Promedio de error de todos los usuarios en cada una de las pruebas}
	\label{fig:InferenciaPropSemMae}
\end{figure}

Como se puede observar en la figura \ref{fig:InferenciaPropSemMae}, en la prueba donde se utiliza únicamente la propiedad género se obtiene un error promedio de aproximadamente 16.5\% en la predicción, y, a medida que se incluyen más propiedades semánticas el error tiende a reducir, aunque en este caso la reducción depende de la propiedad; se puede observar por ejemplo, que al agregar la propiedad \emph{Actor} a la propiedad \emph{Género}, el error se reduce al 13.86\% lo cual representa una reducción mayor que cuando se evalúa el algoritmo con las propiedades Género, Director y Escritor lo cual produce un error de aproximadamente el 15\%. Se observa también que la propiedad \emph{Director} en todos los casos ofrece una mayor reducción del error que la propiedad \emph{Escritor}, finalmente al introducir todas las propiedades semánticas se obtiene el menor promedio de error el cual es el 12.2\%. En la figura \ref{fig:InferenciaPropSemMaeUsu} se muestra el promedio de error de cada usuario. 

\begin{figure}[ht!]
	\centering
		\includegraphics[width=140mm]{ImagenesTesis/Cap5/InferenciaPropSemMaeUsu.png}
	\caption{Promedio de error por usuario en las pruebas efectuadas}
	\label{fig:InferenciaPropSemMaeUsu}
\end{figure}

\subsubsection{Conclusiones del experimento}

Con los resultados obtenidos de la experimentación se puede concluir que la inclusión de propiedades semánticas contribuye en la reducción del error al momento de predecir una calificación, sin embargo, existen ciertas propiedades que tienen una mayor influencia, como se observa en el caso de la propiedad \emph{Actor}, que redujo el error en mayor medida que las propiedades de \emph{Director }y \emph{Escritor} combinadas. Esto sugiere que la mayor reducción del error se logra con la adecuada combinación de propiedades más no necesariamente con un mayor número de ellas.\\
  

\subsection{Impacto del uso y la retro-alimentación de los usuarios del sistema en la Estimación de las Predicciones.}
\label{sub:impactoUso}
En este experimento se analiza el comportamiento del error en las predicciones a medida que se incrementa el número de ítems calificados por un usuario, se intenta comprobar que el sistema mejorará la precisión de sus predicciones mientras más ítems sean valorados por dicho usuario. Este experimento posibilitará posteriormente encontrar el número mínimo de ítems que un usuario debe calificar para que se le pueda brindar una recomendación personalizada.

\subsubsection{Conjunto de datos}
Se realizaron dos pruebas con dos conjuntos diferentes de datos, en la primera se eligieron 10 usuarios que tengan más de 825 películas calificadas, mientras que para el segundo conjunto se eligió igual número de usuarios pero se restringió su número de calificaciones a un rango de 200 a 220, en ambos casos los sets se dividen en un 80\% para la creación de las ontologías y el 20\% restante para la realización de las pruebas. En el primer caso se intentará averiguar si en algún punto, el número creciente de ítems calificados empieza a generar ruido y por ende a degradar la precisión de las calificaciones, mientras que en el segundo caso se busca una mejor apreciación de la curva de error. En este experimento se escogió un número reducido de usuario dada la complejidad computacional y la duración de las pruebas.

\subsubsection{Procedimiento}
Al igual que en las pruebas anteriores, el primer paso consiste en la creación de las ontologías de los usuarios, sin embargo, en este experimento, este proceso se diferencia de los anteriores ya que en primer lugar se crea las ontologías de los usuarios con un solo ítem calificado y se procede a la realización de las pruebas. Al finalizar las pruebas para los 10 usuarios se almacena el \gls{MAElabel} y se vuelve a crear las ontologías pero incrementando el número de ítems calificados en 1 (uno). Nuevamente se realizan las pruebas, y se almacena el \gls{MAElabel}. Este proceso se efectúa sucesivamente hasta alcanzar un número límite de calificaciones, las cuales en el primer caso fueron 825 y en el segundo caso 160.

\begin{figure}[ht!]
	\centering
		\includegraphics[width=100mm]{ImagenesTesis/Cap5/maeNumUsuarios.png}
	\caption{Promedio de error a medida que se incrementan los ítems calificados 160 ítems}
	\label{fig:maeNumUsuarios}
\end{figure}

\subsubsection{Resultados.}   
En la figura \ref{fig:maeNumUsuarios} se presenta el promedio de error en función del incremento del número de ítems calificados con los que se crean las ontologías. En el eje de la abscisas se tiene el número de ítems con los que se creó la ontología mientras que en el eje de las ordenadas se tiene el promedio de error o \gls{MAElabel}. Por otra parte, en la figura \ref{fig:maeNumUsuarios825} se muestra el experimento realizado a los usuarios con más de 825 ítems calificados.

\begin{figure}[ht!]
	\centering
		\includegraphics{ImagenesTesis/Cap5/maeNumUsuarios825.png}
	\caption{Promedio de error a medida que se incrementan los ítems calificados, 825 ítems}
	\label{fig:maeNumUsuarios825}
\end{figure}

Como se puede observar, en ambos casos se describe una curva exponencial decreciente, lo cual significa que a medida que se crean las ontologías de los usuarios o en otras palabras se entrena el algoritmo con más películas calificadas el error tiende a disminuir. Por su característica exponencial esto es mucho mas evidente en los primeros casos, es decir, cuando se incrementan el número de ítems en un rango de 1 a 40, se produce una reducción de error de aproximadamente el 70\% al 20\%, para luego alcanzar cierta estabilidad. La curva en general siempre tiende a ser descendiente; se observa también en el segundo caso que el error nunca alcanza un limite mínimo de error, al menos en el intervalo analizado.

\subsubsection{Conclusiones del Experimento}

Con los resultados obtenidos de las experimentaciones se puede llegar a la conclusión que la efectividad del algoritmo siempre incrementará a medida que se incremente el número de ítems con los que se crea la ontología del usuario. Esta tendencia a la reducción se mantiene sin que la excesiva cantidad de información entorpezca el proceso de recomendación. Este comportamiento puede deberse a que al momento de realizar las conexiones para la inferencia semántica el algoritmo escoge únicamente los datos de interés para el usuario desechando todos los datos que puedan introducir ruido. 

\subsection{Módulo de KNN}
Como se explica en la sección \ref{sub:knn}, este módulo recibe como parámetros principales el número de vecinos cercanos con cuales se realizará la predicción y la distancia límite para encontrarlos. Las pruebas realizadas en este módulo, permiten estimar la distancia y número de vecinos con los cuales se logre la eficiencia máxima del algoritmo, es decir, el menor error en las predicciones.

\begin{figure}[ht!]
	\centering
		\includegraphics[width=0.7\textwidth]{ImagenesTesis/Cap5/knnUsuariosXdistancia.png}
	\caption{Número de vecinos encontrados, según un porcentaje de distancia dada.}
	\label{fig:knnUsuariosXdistancia}
\end{figure}

\subsubsection{Procedimiento}
Para las pruebas se ha considerado el conjunto de datos explicado en la sección \ref{sub:usuarios}, con estos perfiles-ontológicos se procede a buscar vecinos para cada usuario. Específicamente, se realizaron tres pruebas, presentadas a continuación: 
\begin{enumerate}
	\item Evaluar la distancia óptima para asegurar un número de usuarios con al menos un vecino cercano. 
	\item Evaluar el error \gls{MAElabel} con diferente distancia euclidiana para la obtención de vecinos cercanos.
	\item Evaluar el error \gls{MAElabel} con diferente número de vecinos para cada usuario.
\end{enumerate}

\subsubsection{Evaluar la distancia óptima para asegurar un número de usuarios con al menos un vecino cercano.}
En este experimento se efectuá una búsqueda de vecinos cercanos para el conjunto de usuarios. La distancia de búsqueda comienza con el 1\% del total, hasta llegar a un nivel donde los resultados no tengan un cambio sustancial. La figura \ref{fig:knnUsuariosXdistancia}, muestra cuántos usuarios obtienen al menos un vecino según se aumenta la distancia. Como se puede observar, con el 10\% de distancia el 85\% de usuarios ya tienen al menos un vecino, por lo tanto se puede deducir que con esta distancia la mayoría de usuarios ya habrán encontrado vecinos.
También se puede observar que la curva de usuarios con vecinos aumenta drásticamente en una distancia corta, y después de un 13\% aumenta muy levemente, sin presentar mayores cambios, esto indica que la distancia después de el 13\% no es relevante en el algoritmo y puede descartarse.\\

La figura \ref{fig:knnUsuariosXporcentaje}, presenta el porcentaje de vecinos cercanos por cada usuario que obtenga al menos un vecino.

\begin{figure}[ht!]
\centering
	\includegraphics[width=0.7\textwidth]{ImagenesTesis/Cap5/knnUsuariosXporcentaje.png}
	\caption{Promedio de vecinos cercanos encontrados para aquellos usuarios con al menos un vecino.}
	\label{fig:knnUsuariosXporcentaje}
\end{figure}

De la figura \ref{fig:knnUsuariosXporcentaje}, se puede deducir que con en alrededor de 10\% de distancia existe un punto de inflexión en la curva, donde se puede notarse que existen aproximadamente 15 vecinos promedio por usuario. Esto confirma que la distancia obtenida en la figura \ref{fig:knnUsuariosXdistancia} es la correcta. Después de un cierto porcentaje la curva se estabiliza, por lo que se puede decir que el parámetro de la distancia llega a ser irrelevante a partir de un punto determinado.

\subsubsection{Evaluar el error \gls{MAElabel} con diferente distancia euclidiana para la obtención de vecinos cercanos.}
El experimento busca obtener la distancia óptima a utilizarse en el algoritmo, a partir de encontrar el error promedio (\gls{MAElabel}) de todos los usuarios del conjunto. El \gls{MAElabel} se obtiene para diferentes valores crecientes de la distancia, que se incrementa desde un valor base de 2\% a intervalos regulares del 2\% hasta llegar a una distancia donde el comportamiento del error tiende a estabilizarse.  La figura \ref{fig:maeDistanciaPorcentual} presenta la curva de MAE en función del incremento de la distancia euclidiana, particularmente para los 100 usuarios del conjunto. Puede notarse que una distancia equivalente a 36\% muestra un comportamiento estable que determina el intervalo máximo de observación para esta prueba.

\begin{figure}[ht!]
	\centering
		\includegraphics[width=0.85\textwidth]{ImagenesTesis/Cap5/maeDistanciaPorcentual.png}
	\caption{MAE del conjunto de 100 usuarios según el aumento de la distancia euclidiana.}
	\label{fig:maeDistanciaPorcentual}
\end{figure}

La gráfica reflejada en la figura \ref{fig:maeDistanciaPorcentual} denota que la curva del error empieza con un máximo, que disminuye a medida que aumenta la distancia. El pico más bajo se encuentra alrededor del 10\%, y a partir de ese valor, el error empieza a aumentar hasta llegar a estabilizarse.\\

\subsubsection{Evaluar el error \gls{MAElabel} con diferente número de vecinos para cada usuario.}
Este experimento permite obtener el número de vecinos que refleje el mejor resultado en la salida del algoritmo. Para ello, se encuentra el MAE por cada número de vecinos encontrados (en caso de existir más vecinos que el número especificado, se utiliza únicamente los más cercanos). Así el proceso comienza con el vecino más cercano de cada usuario, y se incrementa el número de vecinos sucesivamente hasta llegar a 30. Cabe recalcar que los usuarios para esta prueba son solamente los que tienen un mínimo de 30 vecinos en una distancia del 10\%.  La figura \ref{fig:maePorNumeroVecinosl} presenta el error promedio de todos los usuarios, en función del incremento en el número de vecinos para cada iteración.\\

\begin{figure}[ht!]
	\centering
		\includegraphics[width=0.85\textwidth]{ImagenesTesis/Cap5/maePorNumeroVecinosl.png}
	\caption{Error promedio de predicción por cada número de vecinos por usuarios}
	\label{fig:maePorNumeroVecinosl}
\end{figure}

La figura \ref{fig:maePorNumeroVecinosl} demuestra que el número óptimo de vecinos está determinado por la ubicación de mínimo global de la curva, específicamente: 5 vecinos. Por otra parte, puede notarse que el error con el vecino más cercano es el más alto, con lo que se puede concluir que un solo vecino no es recomendable, y que los resultados pueden mejora si se incluyen otros vecinos en el análisis. También es importante mencionar que después de 5 vecinos el rango de variación del error se estabiliza, denotando mínimas oscilaciones.

\subsubsection{Conclusiones del las pruebas del algoritmo \gls{KNNlabel}}
Con los experimentos se puede concluir, los parámetros finales con mayor eficiencia para el algoritmo son:
\begin{itemize}
	\item Buscar vecinos al 10\% de la distancia euclidiana.
	\item Buscar los 5 vecinos más cercanos del usuario.
\end{itemize}

Adicionalmente, se ha demostrado que no todos los usuarios tendrán vecinos así la distancia se aumenta, con lo que se puede inferir, que existen usuarios atípicos, es decir, que simplemente no se pueden encajar en ningún estereotipo, ya que sus gustos son diferentes a los que se puede catalogar por grupos.

\subsection{Módulo de Estereotipos.}
Se realiza este experimento para determinar el número de ítems que un usuario debe calificar para que pueda recibir una recomendación personalizada, es decir para que abandone el esquema de recomendación por estereotipos. Para ello se utilizarán los resultados obtenidos en el experimento de la sección \ref{sub:impactoUso} y se tratará de encontrar un punto de cruce entre la línea del \gls{MAElabel} de la recomendación por estereotipos y la curva de decrecimiento del error a medida que se incrementan las películas (figura \ref{fig:maeNumUsuarios}).

\subsubsection{Conjunto de datos}

Para esta prueba se han elegido 100 usuarios que tengan un rango de entre 200 y 220 ítems calificados, en este caso no se ha creado un conjunto de datos de entrenamiento puesto que las recomendaciones serán basadas en su estereotipo y no en sus preferencias. Del total de ítems calificados se ha tomado el 20\% para la realización de las pruebas.

\subsubsection{Procedimiento}

Al tratarse de recomendaciones por estereotipos no es necesario crear las ontologías de los usuarios para evaluar el sistema, sin embargo, se han creado las ontologías de los 14 estereotipos descritos en la sección \ref{sub:estereotipos}. Cuando se realiza una predicción, el módulo de estereotipos verifica a cuál de ellos pertenece el usuario y ejecuta el algoritmo recomendador enviando como dato de entrada la ontología del estereotipo correspondiente para que finalmente el sistema realice las predicciones y se evalúe el \gls{MAElabel} obtenido.
\pagebreak
\subsubsection{Resultados del Experimento}

En la figura \ref{fig:maeEstereotipos} se presenta el resultado del \gls{MAElabel} de la recomendación por estereotipos, mientras que la figura \ref{fig:maeCruceEstereotipos} muestra el cruce de este \gls{MAElabel} con la curva de decrecimiento del error mostrada en el experimento anterior.

\begin{figure}[ht!]
	\centering
		\includegraphics[width=100mm]{ImagenesTesis/Cap5/maeEstereotipos.png}
	\caption{MAE de los estereotipos}
	\label{fig:maeEstereotipos}
\end{figure}
 
\begin{figure}[ht!]
	\centering
		\includegraphics[width=100mm]{ImagenesTesis/Cap5/maeCruceEstereotipos.png}
	\caption{Cruce de las gráficas}
	\label{fig:maeCruceEstereotipos}
\end{figure}

Como se puede observar en las gráficas, el \gls{MAElabel} de la recomendación por estereotipos es de alrededor del 22\%. Esta recta intersecta la curva de reducción del error en aproximadamente 20 películas. Se puede observar que superado este número, el error en las recomendaciones personalizadas será menor que el obtenido por los estereotipos, por lo tanto, se puede concluir que superado ese número de ítems calificados, se puede retirar al usuario de la calificación por estereotipos y brindarle calificaciones personalizadas.


\subsection{Comparación del algoritmo de recomendación por inferencia semántica con respecto a KNN}
Este experimento trata de una comparación entre las dos técnicas de recomendación mencionadas, con el objetivo de verificar cuál de ellas tiene una mayor efectividad al momento de realizar la predicción de la calificación para un ítem dado. Con este fin en mente,  del conjunto de datos se han elegido cien usuarios que tengan un rango de 200 a 220 ítems calificados, asegurando de esta manera que hayan suficientes datos tanto para el entrenamiento del algoritmo como para el test, además, al no existir ningún parámetro de ordenamiento en los usuarios se asegura su variedad en preferencias.\\

El conjunto se subdividió en entrenamiento y test, usando un total del 80\% de las calificaciones otorgadas por el usuario para la creación de su ontología y el 20\% restante para el archivo de test. Se crean entonces, las ontologías de cada usuario y al final se procede a ejecutar los dos algoritmos con el mismo archivo de pruebas, es decir, que se ejecutan en igualdad de condiciones. Cada algoritmo calculará el error en la predicción, calculará un promedio por usuario y un promedio general para el total de usuarios.

\begin{figure}[ht!]
	\centering
		\includegraphics[width=1.00\textwidth]{ImagenesTesis/Cap5/inferenciaSemanticaVSknn.png}
	\caption{Gráfico del MAE por usuarios, Inferencia semántica vs \textsc{knn}}
	\label{fig:inferenciaSemanticaVSknn}
\end{figure}

\subsubsection{Resultados del experimento}
En la figura \ref{fig:inferenciaSemanticaVSknn} se presenta el \gls{MAElabel} por cada usuario evaluado. Se puede observar que el error describe un comportamiento parecido tanto al utilizar el  algoritmo de inferencia semántica, representada en azul,  como con el modulo \textsc{knn}, representada en naranja. En estas curvas se puede observar que en algunos casos tiene mejor rendimiento el algoritmo de inferencia (ejemplo: Usuario No.20), pero en otras situaciones es mejor el KNN (ejemplo: Usuario No.5).

\begin{figure}[H]
	\centering
		\includegraphics[width=0.75\textwidth]{ImagenesTesis/Cap5/knnVSIsMAE.png}
	\caption{Gráfico del MAE Total del conjunto de usuarios, Inferencia semántica vs \textsc{knn}}
	\label{fig:knnVSIsMAE}
\end{figure}

En la figura \ref{fig:knnVSIsMAE}, mientras tanto, se puede deducir que los dos algoritmos tienen aproximadamente el mismo resultado, presentando una sutil diferencia, en la que ligeramente el algoritmo de inferencia semántica tiene un mejor desempeño.\\

\subsubsection{Conclusiones del experimento}
Con los resultados presentados, se puede deducir que ambos algoritmos son altamente eficaces, y que con cada usuario varía su desempeño. De estos resultados, ha surgido la idea de crear un algoritmo mixto, que sea capaz de elegir el mejor algoritmo a utilizarse para cada usuario, según su propia conveniencia.

\section{An\'alisis de resultados:\\ Evaluaci\'on cualitativa.}
\label{qualitativa}

En la actualidad la mayoría de los algoritmos de recomendación se centran en mejorar la exactitud del sistema de recomendación. Para evaluar su precisión es esencial que el sistema de recomendación cubra diferentes facetas con el fin de hacer que el sistema sea más diverso, integral y universal. Para ello, se puede realizar pruebas de precisión, cobertura, diversidad, escalabilidad, adaptabilidad,  riesgo, etc, como se describe en \cite{Evaluaciones}. \\

En el caso de este proyecto, este tipo de pruebas no pueden realizarse en su totalidad, ya que se parte de una base de datos de usuarios de prueba, y para extraer la parte cualitativa de la evaluación se requiere de etapas prolongadas de exposición y uso del sistema ante usuarios reales, por ejemplo, funcionando en el entorno de la TV Digital. Por los motivos expuestos, esta sección plantea los mecanismos de evaluación cualitativa a nivel teórico, dejando la puerta abierta a procesos de análisis en futuros proyectos. \\

\subsection{Tipos de evaluación cualitativa.}
Para realizar las evaluaciones se debe probar varias situaciones en distintas circunstancias, por este motivo existen un sin número de pruebas que se pueden efectuar, categorizandose fundamentalmente en dos grandes grupos:\\ 

\begin{itemize}
	\item Evaluación desde la perspectiva del sistema.
	\item Evaluación desde la perspectiva del usuario.
\end{itemize}

\subsubsection{Evaluación desde la perspectiva del sistema}
\label{subsub:psistema}
Este tipo de pruebas se realiza con el fin de encontrar fallas en el algoritmo, en condiciones normales de funcionamiento, los enfoques principales para estas evaluaciones son \cite{EvaluacionChinos}:
\begin{itemize}
	\item \textbf{Confianza.} Se define como la exactitud que tiene en cada predicción, entendiéndose que si un sistema otorga  recomendaciones exactas entonces se convierte en un sistema confiable.
	\item \textbf{Escalabilidad.} Al tener conjuntos de datos sumamente extensos, un sistema puede consumir grandes recursos computacionales. El nivel de escalabilidad depende de qué tan útil es el algoritmo de acuerdo a los recursos disponibles.
	\item \textbf{Adaptabilidad.} La adaptabilidad es una evaluación que trata de medir si el sistema funciona en condiciones reales, esto depende según el ámbito que se encuentre aquel sistema. 
\end{itemize}

\subsubsection{Evaluación desde la perspectiva del usuario.}
\label{subsub:puser}
Las evaluaciones de este tipo tratan básicamente de diagnosticar el sistema de acuerdo a la opinión explícita del usuario, estas pruebas son las más efectivas. Para estas pruebas se toman en cuenta \cite{EvaluacionChinos}:

\begin{itemize}
	\item \textbf{Preferencias.} Es un indicador que describe esencialmente cuánto cada usuario está satisfecho con el sistema, es decir, una medida de satisfacción de las recomendaciones que realiza el sistema.
	\item \textbf{Confianza.} El usuario brinda una opinión de si las recomendaciones que se están otorgando son correctas y qué nivel de confianza tiene en las mismas.
\end{itemize}

\subsection{Planteamiento a futuro.}
Cuando el sistema esté funcionando con condiciones reales, la evaluación cualitativa podrá ser realizada. Sin embargo, desde  la \emph{perspectiva del sistema}, según se indicó en la sección \ref{subsub:psistema}, el sistema puede ser probado en uso, evaluando resultados como: Tiempos de predicción, estabilidad, resultados de eficacia, etc. De esta manera se pretende tener una idea de cómo se comporta el sistema, con el fin de optimizarlo.\\

Para la \emph{perspectiva del usuario}, sección \ref{subsub:puser}, se pretende realizar sondeos a los usuarios actuales para que brinden opiniones verdaderas sobre las ventajas de uso del sistema y su funcionamiento.